<?php
class PremiumArea
{
  const ID_SPRZEDAWCY = 12964;
  const SMS_URL = '/index.php?r=site/check_sms_code';
  const SMS_PRICE = 2337;
  const RETURN_URL_OK = '/index.php?r=site/finalize_payment_success';
  const RETURN_URL_ERROR = '/index.php?r=site/finalize_payment_error';
  const PAYMENT_INIT_STATUS = 1;
  const PAYMENT_NOT_YET_VERIFIED_STATUS = 2;
  const PAYMENT_DONE_STATUS = 3;
  const SMS_PAYMENT_NOT_YET_VERIFIED_STATUS = 1;
  const SMS_PAYMENT_DONE_STATUS = 2;
  const SMS_COOKIE_NAME = 'sms_przelewy24';
  const SMS_CODE_LIFE_TIME = 3600;

  public static $pages_patterns = array(
    'dynamika_wzrostu_liczby_klientow',
    'dynamika_wzrostu_przychodow',
    'fundusze_wlasne',
    'fundusze_wlasne_do_przychodow',
    'fundusze_wlasne_na_klienta',
    'gwarancja_ubezpieczeniowa',
    'gwarancja_do_przychodow',
    'liczba_biur_agencyjnych',
    'liczba_klientow',
    'liczba_oddzialow_wlasnych',
    'przychody_ze_sprzedazy',
    'rentownosc_netto',
    'srednia_cena_wycieczki',
    'srodki_pieniezne_netto',
    'srodki_pieniezne_netto_na_klienta',
    'zysk_strata_netto',
    'zysk_strata_netto_na_klienta',
  );
  public static $touroperators = array(
    'itaka'           => 0,
    'oasis_tours'     => 1,
    'przyklad'        => 2,
    'alfa_star'       => 3,
    'bee_free'        => 4,
    'ecco_holiday'    => 5,
    'exim_tours'      => 6,
    'grecos'          => 7,
    'gti_travel'      => 8,
    'neckermann'      => 9,
    'rainbow_tours'   => 10,
    'sky_club'        => 11,
    'sun__fun'        => 12,
    'triada'          => 13,
    'tui_poland'      => 14,
    'wezyr_holidays'  => 15,
  );
  
  public static $exceptions = array(
	'gwarancja_do_przychodow' => 2,
	'gwarancja_do_przychodow-1' => 3,
	'gwarancja_do_przychodow-2' =>  4,
	'gwarancja_do_przychodow-3' =>  5,
	'gwarancja_do_przychodow-4' =>  6,
	'gwarancja_do_przychodow-5' =>  7,
	'gwarancja_do_przychodow-6' =>  8,
	'gwarancja_do_przychodow-7' =>  0,
	'gwarancja_do_przychodow-8' =>  9,
	'gwarancja_do_przychodow-9' =>  1,
	'gwarancja_do_przychodow' => 2,
	'gwarancja_do_przychodow_-_porownanie' => 2,
	'gwarancja_do_przychodow_-_porownanie-1' => 3,
	'gwarancja_do_przychodow_-_porownanie-2' =>  4,
	'gwarancja_do_przychodow_-_porownanie-3' =>  5,
	'gwarancja_do_przychodow_-_porownanie-4' =>  6,
	'gwarancja_do_przychodow_-_porownanie-5' =>  7,
	'gwarancja_do_przychodow_-_porownanie-6' =>  8,
	'gwarancja_do_przychodow_-_porownanie-7' =>  0,
	'gwarancja_do_przychodow_-_porownanie-8' =>  9,
	'gwarancja_do_przychodow_-_porownanie-9' =>  1,
	'przychody_ze_sprzedazy_-_porownanie-1' => 2,
	'przychody_ze_sprzedazy_-_porownanie-2' => 1,
    'dynamika_wzrostu_liczby_klientow_-_porownanie-1' => 2,
    'dynamika_wzrostu_liczby_klientow_-_porownanie-2' => 1,
    'dynamika_wzrostu_przychodow_-_porownanie-1' => 2,
    'dynamika_wzrostu_przychodow_-_porownanie-2' => 1,
    'liczba_klientow_-_porownanie-1' => 2,
	'liczba_klientow_-_porownanie-2' => 1,
    'srednia_cena_wycieczki_-_porownanie-1' => 2,
    'srednia_cena_wycieczki_-_porownanie-2' => 1,
	'liczba_oddzialow_wlasnych_-_porownanie-1' => 2,
	'liczba_oddzialow_wlasnych_-_porownanie-2' => 1,
    'liczba_biur_agencyjnych_-_porownanie-1' => 2,
    'liczba_biur_agencyjnych_-_porownanie-2' => 1,
  );
  
  
  private static $premium_options = array(
    18327=>'149 zł. netto (183,27 zł. brutto) za abonament 1-miesięczny',
    36654=>'298 zł. netto (366,54 zł. brutto) za abonament 3-miesięczny (oszczędzasz brutto 183,27 zł.)',
    43542=>'354 zł. netto (435,42 zł. brutto) za abonamnet 6-miesięczny (oszczędzasz brutto 664,20 zł.)',
  );

  private static $premium_prolong_data = array(
    18327=>2678400,//60*60*24*31*1 - na miesiąc
    36654=>8035200,//60*60*24*31*3 - na 3 miechy
    43542=>16070400,//60*60*24*31*6 - na 6 miechów
  );
  
  static public function get_sms_url($backlink = null, $with_base = true)
  {
    return self::prepare_url(self::SMS_URL, $backlink, $with_base); //return Yii::app()->request->baseUrl . self::SMS_URL .  '&backlink=' . $backlink;
  }
  
  static public function get_return_url_ok($backlink = null, $with_base = true)
  {
    return self::prepare_url(self::RETURN_URL_OK, $backlink, $with_base); //return Yii::app()->request->baseUrl . self::RETURN_URL_OK . '&backlink=' . $backlink;//TODO - tymczasowo zostaje
  }
  
  static public function get_return_url_error($backlink = null, $with_base = true)
  {
    return self::prepare_url(self::RETURN_URL_ERROR, $backlink, $with_base); //Yii::app()->request->baseUrl . self::RETURN_URL_ERROR . '&backlink=' . $backlink;
  }
  static public function prepare_url($url_part, $backlink_part, $with_base = true)
  {
    $bu = Yii::app()->request->getBaseUrl(true);
    if($with_base == true) {
      $backlink_part = $bu . $backlink_part;
    }
    return $bu . $url_part . '&backlink=' . $backlink_part;
  } 
  
  static public function gen_session_id($user)
  {
    return md5($user->email . time());
  }
  
  static public function get_crc_hash(array $params)
  {
    $str = '';
    foreach($params as $param) {
      $str .= $param . '|'; 
    }
    
    $str .= self::get_crc_key();
    
    return md5($str);
  }
  
  static private function get_crc_key()
  {
    return Yii::app()->params['crc_key'];
  }
  
  static public function is_full_premium_page($requested_file)
  {
    $tmp = basename($requested_file, '.html');
    
    if (self::is_premium_page($requested_file)) {
      $tmp = explode('-', $tmp);
      return in_array('_porownanie', $tmp);
    }
    
    return false; 
  }
  
  public static function get_touroperator_id_by_requested_file($requested_file) 
  {
    $tmp = basename($requested_file, '.html');
    if(array_key_exists($tmp, self::$exceptions)) {
		return self::$exceptions[$tmp];
	}
	if (self::is_premium_page($requested_file)) {
      $tmp = explode('-', $tmp);
      return (int)$tmp[count($tmp) - 1];
    } else {
      if (array_key_exists($tmp, self::$touroperators)) {
        return self::$touroperators[$tmp];
      }
    }
    return null;
  }

  static public function is_premium_page($requested_file) 
  {
    $is_premium_page = false;
    foreach(self::$pages_patterns as $key) {
      $is_premium_page = $is_premium_page || (bool)substr_count($requested_file, $key);
    }
    return $is_premium_page;
  }

  static public function check_access_to_page($requested_file) 
  {
       
    /*
    1.Sprawdź rodzaj strony ( premium / full_premium )
    2.Sprawdź czy koleś ma do niej dostęp - jak ma to zwróć 'true'
    3.Jeśli nie ma dostępu to wypluj odpowiedni html z linkami do logowaia/płaceia/sms'a itp...
    */
    
    if(Yii::app()->params['test_mode']) {
      $query = parse_url(urldecode(Yii::app()->request->requestUri), PHP_URL_QUERY);
      parse_str($query, $arr_query);
 
      if (isset($arr_query['premium_area_access']) && $arr_query['premium_area_access'] == 1) {
        return true;
      }
    }
    
    $operator_id = self::get_touroperator_id_by_requested_file($requested_file);
    if ($operator_id === 2) {               // access granted to operator 'Przykład'
      return true;
    }
    
    //ad1.
    if(self::is_full_premium_page($requested_file)) {
      $access_to_fpp = self::check_access_to_full_premium_page($requested_file);//ad2,3

      if(!empty($access_to_fpp) && $access_to_fpp !== true) {
        return '<ul id="premium_area_options_list">' . $access_to_fpp . '</ul>';
      }

      return $access_to_fpp;
    }
    
    if(self::is_premium_page($requested_file)) {
      return self::check_access_to_premium_page($requested_file);//ad2,3
    }
    
    return null;//strona darmowa
  }

    
  static private function check_access_to_premium_page($requested_file)
  {
    $operator_id = self::get_touroperator_id_by_requested_file($requested_file);
    $res_link = '<ul id="premium_area_options_list">';
    
    if(self::validate_cookie(self::get_sms_code_cookie($operator_id), $operator_id)) {
      return true;
    } else {
      $res_link .= self::prepare_link('wykup dostęp poprzez SMS', self::get_sms_url('/'.$requested_file) . '&operator_id=' . $operator_id);
    }

    $res = self::check_access_to_full_premium_page($requested_file);
    if($res === true) {
      return true;
    } else {
      $res_link .= $res;
    }    
    
    return $res_link . '</ul>';
  }
  
  static private function check_access_to_full_premium_page($requested_file)
  {    
    $user = Yii::app()->getModule('user')->user();
    if($user) {
      if($user->premium_option_valid_thru > time()) {
        return true;
      } else {
        return self::prepare_link('wykup dostęp do strefy premium przedłużając ważość konta', '/index.php?r=/user/profile/prepare_buy');
      }
    }
    
    return self::prepare_link('zaloguj się na koncie aby uzyskać dostęp do strefy premium', '/index.php?r=/user/login');
  }
  
  static public function prepare_link($label, $href)
  {
    return '<li><a href="' . $href . '">' . $label . '</a></li>';
  }
  
  static private function validate_cookie($cookie, $operator_id)
  {
    if(!$cookie) {
      self::_echo('brak cokie');  
      return false;
    }
    
    self::_dump($cookie);
    
    if(!isset($cookie->operator_id) || 
       !isset($cookie->sms_code) || 
       !isset($cookie->crc)) {
      self::_echo($cookie->operator_id);
      self::_echo($cookie->sms_code);
      self::_echo($cookie->crc);
      self::_echo('błąd w zawartości cookiesa');;
      return false;
    }
    
    if($operator_id != $cookie->operator_id) {
      self::_echo('nie zgadza się id operatora');
      return false;
    }
    
    $params = array(
      'operator_id' => $cookie->operator_id,
      'sms_code' => $cookie->sms_code,
    );
    
    if(self::get_crc_hash($params) != $cookie->crc) {
      self::_echo('nie zgadza się suma kontrolna');
      return false;
    };
    
    return true;
  }

  static private function verify_sms_code($p24_sms, $p24_kwota, $operator_id)
  {
    $user_agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
    $url = "https://secure.przelewy24.pl/smsver.php";
    $P = array();
    $P[] = 'p24_id_sprzedawcy=' . self::ID_SPRZEDAWCY;  // Wpisz tutaj swoje ID sprzedawcy z Przelewy24.
    $P[] = 'p24_kwota=' . $p24_kwota;           // Wpisz tutaj kwotę SMSa w groszach, np 122 (dla SMSa o wartości 1PLN netto)
    $P[] = 'p24_sms='.$p24_sms;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_POST,1);
    curl_setopt($ch, CURLOPT_POSTFIELDS,join("&",$P));
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    $result=curl_exec ($ch);
    if ($result == "OK") {
      
      // transakcja poprawna
      // wyświetl podsumowanie, podziękowanie, itp. 
      return true;
    } 
    
    if(Yii::app()->params['test_mode'] && $p24_sms == 'MAGIC' . $operator_id) {
      self::_echo('błąd: ' . $result . ' ale tryb testowy włączony i działa kod MAGIC więc ok:)');
      return true;
    }
      // transakcja błędna
    self::_echo('Błąd transakcji: ' . $result);;
      // Wyświetl informację o błędzie
    return false;
  }
  
  static public function validate_sms_form()
  {
    if(isset($_POST['p24_sub']) && $_POST['p24_sub'] == 'yes' && isset($_POST['p24_operator_id']) && isset($_POST['p24_sms'])) {
     if(Yii::app()->params['test_mode'] && $_POST['p24_sms'] == 'MAGIC') {
       $_POST['p24_sms'] = 'MAGIC' . $_POST['p24_operator_id'];
     }
     $sms_code_obj = SMSPayment::model()->findByPk($_POST['p24_sms']);     
      if($sms_code_obj) {
        self::_echo('-odnalazłem kod sms w bazie!-');;
        if($sms_code_obj->status < self::SMS_PAYMENT_DONE_STATUS) {
          if(self::verify_sms_code($_POST['p24_sms'], self::SMS_PRICE, $_POST['p24_operator_id'])) {
            self::save_verification($sms_code_obj);
            self::_echo('zweryfikowałem stary kod!');
            return true;
          } else {
            self::_echo('stary kod nie został zweryfikoway:(');
            return false;
          }
        } else {
          self::_echo('kod sms ważny do: ' . ( date("d.m.Y H:i:s", $sms_code_obj->verified_timestamp + self::SMS_CODE_LIFE_TIME)));
          self::_echo('czas obecny: ' . date("d.m.Y H:i:s",time()));
          if(($sms_code_obj->verified_timestamp + self::SMS_CODE_LIFE_TIME) < time()) {
            self::_echo('kod się przedawnił');
            return false;
          }
          self::_echo('kod juz jest bazie i wciąż działa:)');
          self::set_sms_code_cookie($sms_code_obj);
          return true;
        }
      } else {
        $sms_code_obj = new SMSPayment();
        $sms_code_obj->operator_id = $_POST['p24_operator_id'];
        $sms_code_obj->price = self::SMS_PRICE;
        $sms_code_obj->sms_code = $_POST['p24_sms'];
        $sms_code_obj->create_timestamp = time();
        $sms_code_obj->status = PremiumArea::SMS_PAYMENT_NOT_YET_VERIFIED_STATUS;
        $sms_code_obj->save();
        self::_echo('-zapisałem kod w bazie-');
        
        if(self::verify_sms_code($_POST['p24_sms'], self::SMS_PRICE, $_POST['p24_operator_id'])) {
          self::save_verification($sms_code_obj);
          self::_echo('zweryfikowałem nowy kod!juppi:)');
          return true;
        } else {
          self::_echo('kodu nie zweryfikowano:(');
          return false;
        }
        
      }
      //sprawdź czy kod jest bazie - jak jest to jaki ma status
      //jak ie ma to utwórz i weryfikuj kod
      //jak jest i jest zweryfikowany to daj dostęp - ustaw cookies'a
      //jak jest i nie jest zweryfikowany - to próbuj weryfikować
      //echo 'form wysłąo - ';
      return true;
    } 
      
    return false;
  }
 
  static private function save_verification($sms_code_obj)
  {
    $sms_code_obj->verified_timestamp = time();
    $sms_code_obj->status = PremiumArea::SMS_PAYMENT_DONE_STATUS;
    $sms_code_obj->save();
    self::set_sms_code_cookie($sms_code_obj);
    self::_echo('-zweryfikowałem kod sms-');
  }
  
  static public function get_sms_code_cookie($operator_id)
  {
    $val = self::get_cookie(self::SMS_COOKIE_NAME . '_' . $operator_id);
    if(isset($val)) {
      self::_echo('Jest cookie!');
      self::_dump($val);
      return $val;
    }
    self::_echo('brak cookie');
    return false;
  }
  
  static private function set_sms_code_cookie($sms_code_obj)
  {
    $params = array(
      'operator_id' => $sms_code_obj->operator_id,
      'sms_code' => $sms_code_obj->sms_code,
    );
    
    $params['crc'] = self::get_crc_hash($params);
    
    self::set_cookie(self::SMS_COOKIE_NAME . '_' . $params['operator_id'], $params);
  }
  
  static private function set_cookie($cookie_name, $value)
  {
    Yii::app()->request->cookies[$cookie_name] = new CHttpCookie($cookie_name, json_encode($value));
  }
  
  static private function get_cookie($cookie_name)
  {
    return (isset(Yii::app()->request->cookies[$cookie_name])) ? json_decode(Yii::app()->request->cookies[$cookie_name]->value) : null;
  }
 
  static public function get_sms_form($operator_id, $backlink = '')
  {
    return '    
    <form action="' . self::get_sms_url($backlink, false) . '" method="post">
      <input type="hidden" name="p24_sub" value="yes" />
      <input type="hidden" name="p24_operator_id" value="' . $operator_id . '" />
      <div style="font: 13px verdana, arial, sans-serif; color:#000; margin:20px 0;text-align: center;"><b>Wpisz kod:</b> 
      <input type="text" name="p24_sms" style="width:90px;" maxlength="6"/>&nbsp;
      <input name="submit_send" value="wyślij" type="submit" style="width:50px;"/></div>
      <div>Koszt SMS to 14 zł netto (+ 23% z VAT)</div>
    </form>
    ';
  }  
  
  static public function get_payment_form($session_id, $price, $user)
  {
    $crc = self::get_crc_hash(array(
      $session_id,
      self::ID_SPRZEDAWCY,
      $price,
    ));
    
    return '<form action="https://secure.przelewy24.pl/index.php" method="post" class="form">
      <input type="hidden" name="p24_session_id" value="' . $session_id . '" />
      <input type="hidden" name="p24_id_sprzedawcy" value="' . self::ID_SPRZEDAWCY . '" />
      <input type="hidden" name="p24_kwota" value="' . $price . '" />' .
      self::get_payment_form_desc() .
      '<input type="hidden" name="p24_klient" value="' . $user->profile->firstname . ' ' . $user->profile->lastname . '" />
      <input type="hidden" name="p24_adres" value="' . $user->profile->address . '" />
      <input type="hidden" name="p24_kod" value="' . $user->profile->postal_code . '" />
      <input type="hidden" name="p24_miasto" value="' . $user->profile->city . '" />
      <input type="hidden" name="p24_kraj" value="' . $user->profile->country . '" />
      <input type="hidden" name="p24_email" value="' . $user->email . '" />
      <input type="hidden" name="p24_language" value="pl" />
      <input type="hidden" name="p24_return_url_ok" value="' . self::get_return_url_ok() . '" />
      <input type="hidden" name="p24_return_url_error" value="' . self::get_return_url_error(). '" />
      <input type="hidden" name="p24_crc" value="' . $crc . '" />
      <input name="submit_send" value="Kupuję" type="submit" />
    </form>';
  } 
  
  static private function get_payment_form_desc()
  {
    return (Yii::app()->params['test_mode'] ? '<input type="hidden" name="p24_opis" value="TEST_OK" />' : '');
  }
  
  static private function verify_payment($p24_id_sprzedawcy, $p24_session_id, $p24_order_id, $p24_kwota='')
  {
    $P = array(); $RET = array();
    $url = "https://secure.przelewy24.pl/transakcja.php";
    $P[] = "p24_id_sprzedawcy=".$p24_id_sprzedawcy;
    $P[] = "p24_session_id=".$p24_session_id;
    $P[] = "p24_order_id=".$p24_order_id;
    $P[] = "p24_kwota=".$p24_kwota;
    $P[] = "p24_crc=".self::get_crc_hash(array(
      $p24_session_id,
      $p24_order_id,
      $p24_kwota,
    ));
    $user_agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_POST,1);
    if(count($P)) curl_setopt($ch, CURLOPT_POSTFIELDS,join("&",$P));
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    $result=curl_exec ($ch);
    curl_close ($ch);
    $T = explode(chr(13).chr(10),$result);
    $res = false;
    foreach($T as $line) {
      $line = preg_replace("[\n\r]","",$line);
      if($line != "RESULT" and !$res) continue;
      if($res) $RET[] = $line;
      else $res = true;
    }
    
    return $RET;
  }
  
  static public function finalize_payment_success_form()
  {
    if(!self::prevalidated_finalize_form(array('p24_karta'))) {
      self::_echo('bląd prewalidacji formularza płat.');
      return false;
    }
    
    $payment_session = self::validate_finalize_form();
    if(!$payment_session) {
      self::_echo('błąd walidacji form. płat.');
      return false;
    }
    
    $payment_session->status = self::PAYMENT_NOT_YET_VERIFIED_STATUS;
    $payment_session->order_id = $_POST['p24_order_id'];
    $payment_session->save();

    $verify_res = self::verify_payment(self::ID_SPRZEDAWCY, $_POST['p24_session_id'], $_POST['p24_order_id'], $_POST['p24_kwota']);
    
    if($verify_res[0] == "TRUE") {
      $payment_session->status = self::PAYMENT_DONE_STATUS;
      $payment_session->save();
      
      $prolong_for = self::get_prolong_by_price($payment_session->price);
      if(!$prolong_for) {
        self::_echo('nie udało się zasilić konta - niepoprawna cena!');
        return false;
      } 
      
      $user = Yii::app()->getModule('user')->user($payment_session->user_id);
      $time = time();
      
      if($user->premium_option_valid_thru < $time) {
        $user->premium_option_valid_thru = 0;
      }
      
      if($user->premium_option_valid_thru == 0) {
        $prolong_for += $time;
      }
      
      $user->premium_option_valid_thru += $prolong_for;
      $user->save();
      
      return $payment_session;
    } else {
      self::_dump($verify_res);
      return false;
    }
    
  } 
  
  static public function finalize_payment_error_form()
  {
    if(!self::prevalidated_finalize_form(array('p24_error_code'))) {
      self::_echo('błąd prewalidacji formularza płat.');
      return false;
    }
 
    $payment_session = self::validate_finalize_form();
    if(!$payment_session) {
      self::_echo('błąd walidacji formularza płatności');
      return false;
    }
    
    $payment_session->status = $_POST['p24_error_code'];
    $payment_session->order_id = $_POST['p24_order_id'];
    $payment_session->save();
    return $payment_session;
  }
  
  static private function validate_finalize_form()
  {
    $payment_session = StandardPayment::model()->findByPk($_POST['p24_session_id']);
    if(!$payment_session) {
      self::_echo('brak obiektu transakcji w bazie');
      return false;
    }
    
    if($payment_session->price != $_POST['p24_kwota']) {
      self::_echo('nie zgadza się kwota');
      return false;
    }
    
    if($payment_session->status == self::PAYMENT_DONE_STATUS) {
      self::_echo('ta transakcja została zakończona już wcześniej!');
      return false;
    }
    
    return $payment_session;
  }
  
  static private function prevalidated_finalize_form(array $additional_fields = array())
  {
    $fields = array(
      'p24_session_id',
      'p24_order_id',
      'p24_kwota',
      'p24_crc',
    );
    
    $fields = array_merge($fields, $additional_fields);
    
    if(!self::isset_post_fields($fields)) {
      self::_echo('brakuje niektórych pól formularza');
      return false;
    }
    
    $calculated_crc = self::get_crc_hash(array(
      $_POST['p24_session_id'],
      $_POST['p24_order_id'],
      $_POST['p24_kwota'],
    ));
    
    if($calculated_crc != $_POST['p24_crc']) {
      self::_echo('nie zgadza się suma kontrolna');
      return false;
    }
    
    return true;
  } 
  
  static private function isset_post_fields(array $fields)
  {
    foreach($fields as $field) {
      if(!isset($_POST[$field])) {
        self::_echo('nie ustawiono pola: ' . $field);
        return false;
      }
    }
    
    return true;
  }
  
  static public function validate_payment_price($value)
  {
    if(array_key_exists($value, self::$premium_options)) {
      return true;
    }
    
    return false;
  }
  
  static public function get_premium_options()
  {
    return self::$premium_options;
  }
  
  static public function get_type_id_by_price($price)
  {
    if(array_key_exists($price, self::$premium_options)) {
      return self::$premium_options[$price];
    }
    
    return 'NaN';
  }
  
  static private function get_prolong_by_price($price)
  {
    if(array_key_exists($price, self::$premium_prolong_data)) {
      return self::$premium_prolong_data[$price];
    }
    
    return false;
  }
  
  static public function _dump($obj)
  {
    if(Yii::app()->params['test_mode']) {
      var_dump($obj);
    }
  }
  
  static public function _echo($msg)
  {
    if(Yii::app()->params['test_mode']) {
      echo $msg;
    }
  }
  
}
?>
